package pe.gob.servir.apps.censodirectivo.ejb.dao;

import java.util.List;

import javax.ejb.Local;

import pe.gob.servir.apps.censodirectivo.excepcion.DAOExcepcion;
import pe.gob.servir.apps.censodirectivo.model.bean.Configuracion;
import pe.gob.servir.apps.censodirectivo.model.bean.Entidad;
import pe.gob.servir.apps.censodirectivo.model.bean.MensajeRespuesta;
import pe.gob.servir.apps.censodirectivo.model.bean.OpcionCombo;
import pe.gob.servir.apps.censodirectivo.model.bean.Persona;
import pe.gob.servir.apps.censodirectivo.model.bean.Plantilla;
import pe.gob.servir.apps.censodirectivo.model.bean.Ubigeo;

@Local
public interface ConsumirProcedimientoDAOLocal {

	long obtenerIdSecuencial(String codigoTabla);

	List<OpcionCombo> obtenerCombo(String nombreObjeto, long filtro, long filtroDos);

	List<Ubigeo> obtenerDepartamentos();

	List<Ubigeo> obtenerProvincias(String departamento);

	List<Ubigeo> obtenerDistritos(String departamento, String provincia);
	
	List<Ubigeo> obtenerDepartamentosSunat();

	List<Ubigeo> obtenerProvinciasSunat(String departamento);

	List<Ubigeo> obtenerDistritosSunat(String departamento, String provincia);

	List<OpcionCombo> obtenerEntidades();
	
	List<OpcionCombo> obtenerEntidadesPorCenso(long censoId);
	
	List<OpcionCombo> obtenerEntidadesPorNivelDeGobierno(long nivelGobiernoId);

	List<OpcionCombo> obtenerOrganos(long entidadId);
	
	List<OpcionCombo> obtenerOrganosFaltantes(long entidadId, long censoId);

	List<OpcionCombo> obtenerUnidadesOrganicas(String organo_id);
	
	List<OpcionCombo> obtenerUnidadesOrganicasFaltantes(long organoId, long entidadId, long censoId );

	List<OpcionCombo> obtenerPuestosEspecificos(String unidad_organica_id);
	
	List<OpcionCombo> obtenerPuestosEspecificosFaltantes(long unidadOrganicaId, long entidadId, long censoId);

	Integer validarPersonaExiste(String dni);

	MensajeRespuesta insertarPersonaGenerico(Persona persona) throws DAOExcepcion;
	
	MensajeRespuesta grabarConfiguracion(Configuracion configuracion) throws DAOExcepcion;
	
	MensajeRespuesta formatoCorreo(String tipo, Long id, String tipoPlantilla, String clave) throws DAOExcepcion;
	
	MensajeRespuesta confirmarNotificacion(String codigo, String clave) throws DAOExcepcion;
	
	String consultarMensaje(String codigo);

	Plantilla formatoRecuperarClave(String correoElectronico, final String clave);
	
	MensajeRespuesta obtenerConfiguracion() throws DAOExcepcion;
	
	Persona obtenerDatosPersona(String dni) throws DAOExcepcion;

	Entidad obtenerDatosEntidad(String numeroRUC, String nombreEntidad, String tipoEntidad) throws DAOExcepcion;

}
